#include "SQLNotExpr.h"
#include "../../visitor/SQLASTVisitor.h"

SETCALSS(SQLNotExpr);

SQLNotExpr::SQLNotExpr()
{
}
SQLNotExpr::~SQLNotExpr()
{
  // if (expr != NULL)
  // {
  //   delete expr;
  //   expr = NULL;
  // }
}
SQLNotExpr::SQLNotExpr(SQLExpr_ptr theExpr)
{

  expr = theExpr;
}

SQLExpr_ptr SQLNotExpr::getExpr()
{
  return expr;
}

void SQLNotExpr::setExpr(SQLExpr_ptr theExpr)
{
  expr = theExpr;
}

void SQLNotExpr::output(std::stringstream * buf)
{
  (*buf) << " NOT ";
  expr->output(buf);
}

void SQLNotExpr::accept0(SQLASTVisitor_ptr visitor)
{
  if (visitor->visit(SharedObject(SQLNotExpr)))
  {
    acceptChild(visitor, expr);
  }

  visitor->endVisit(SharedObject(SQLNotExpr));
}

// int hashCode() {
// final int prime = 31;
// int result = 1;
// result = prime * result + ((expr == NULL) ? 0 : expr.hashCode());
// return result;
//}

// BOOL_ptr equals(Object obj) {
// if (this == obj) {
// return BOOL::TRUE;
//}
// if (obj == NULL) {
// return BOOL::FALSE;
//}
// if (getClass() != obj.getClass()) {
// return BOOL::FALSE;
//}
// SQLNotExpr other = (SQLNotExpr) obj;
// if (expr == NULL) {
// if (other.expr != NULL) {
// return BOOL::FALSE;
//}
//} else if (!expr.equals(other.expr)) {
// return BOOL::FALSE;
//}
// return BOOL::TRUE;
//}
